#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
   autor: João Rebocho Nº 6035
   data: 26 de Novembro de 2013
   obs: 3ª Parte do Trabalho de LP
'''

#imports da classe InterfaceTP6035
from wx import wx #@UnresolvedImport
import os

class InterfaceTP6035(wx.Frame):
    '''
    Nesta classe criei toda a interface do trabalho
    '''
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(InterfaceTP6035, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e todos os seus menus
        self.InitUI()
        pass
    def InitUI(self):
        '''
        Neste metodo é criado os vários menus e submenus da Interface
        Alem disso tambem é criado a caixa de texto
        '''
        #Criacao da barra de menu
        menubar = wx.MenuBar()
       
        #Criacao do menu Ficheiro
        menuFicheiro = wx.Menu()
        #Adicao do menu Ficheiro
        menuFicheiro.AppendSeparator()
       
        #Criacao do menu Ajuda      
        menuAjuda = wx.Menu()
        #Adicao do menu Ajuda
        menuAjuda.AppendSeparator()
       
        #Criacao do menu Grafico
        menuGraficos = wx.Menu()
        #Adicao do menu Grafico
        menuGraficos.AppendSeparator()

        #Criacao dos dois sub menus do menu Ficheiro
        abrir = wx.MenuItem(menuFicheiro, wx.ID_OPEN, '&Abrir\tCtrl+A')
        sair = wx.MenuItem(menuFicheiro, wx.ID_EXIT, '&Sair\tCtrl+S')
       
        #Criacao do sub menus do menu Ajuda
        ajuda = wx.MenuItem(menuAjuda, wx.ID_HELP, '&VerAjuda\tF1')
       
        #Criacao dos sub menus do menu Grafico
        ipcGlobal = wx.MenuItem(menuGraficos, wx.ID_ABOUT, '&IpcGlobal\tF2')
        varAnual = wx.MenuItem(menuGraficos, wx.ID_ANY, '&VariacaoAnual\tF3')
        remuMinMensal = wx.MenuItem(menuGraficos, wx.ID_UP, '&RemuneracaoMinimaMensal\tF4')
        remuMaxMensal = wx.MenuItem(menuGraficos, wx.ID_ABOUT, '&RemuneracaoMaximaMensal\tF5')
        remuMinMensalConstante = wx.MenuItem(menuGraficos, wx.ID_ANY, '&RemuneracaoMinimaMensalConstante\tF6')
        remuMaxMensalConstante = wx.MenuItem(menuGraficos, wx.ID_UP, '&RemuneracaoMaximaMensalConstante\tF7')
        pib = wx.MenuItem(menuGraficos, wx.ID_ANY, '&Pib\tF8')
        renNacionalPerCapita = wx.MenuItem(menuGraficos, wx.ID_UP, '&RendimentoNacionalPerCapita\tF9')
        renDispinivelPerCapita = wx.MenuItem(menuGraficos, wx.ID_ANY, '&RendimentoDisponivelPerCapita\tF10')
        remuPerCapita = wx.MenuItem(menuGraficos, wx.ID_UP, '&RemuneracaoPerCapita\tF11')

        #Adicicao dos sub menus abrir e sair ao menu Ficheiro
        menuFicheiro.AppendItem(abrir)
        menuFicheiro.AppendItem(sair)
                       
        #Adicicao do sub menu ajuda ao menu Ajuda
        menuAjuda.AppendItem(ajuda)
       
        #Adicicao dos sub menus IpcGlobal, VariacaoAnual, RemuneracaoMinimaMensal, RemuneracaoMaximaMensal, 
        #RemuneracaoMinimaMensalConstante e RemuneracaoMaximaMensalConstante ao menu Grafico
        menuGraficos.AppendItem(ipcGlobal)
        menuGraficos.AppendItem(varAnual)
        menuGraficos.AppendItem(remuMinMensal)
        menuGraficos.AppendItem(remuMaxMensal)
        menuGraficos.AppendItem(remuMinMensalConstante)
        menuGraficos.AppendItem(remuMaxMensalConstante)
        menuGraficos.AppendItem(pib)
        menuGraficos.AppendItem(renNacionalPerCapita)
        menuGraficos.AppendItem(renDispinivelPerCapita)
        menuGraficos.AppendItem(remuPerCapita)
       
        #Chamada às funções que vai criar os eventos para cada função
        self.Bind(wx.EVT_MENU, self.OnAbrir, abrir)
        self.Bind(wx.EVT_MENU, self.OnSair, sair)
        self.Bind(wx.EVT_MENU, self.OnAjuda, ajuda)
        self.Bind(wx.EVT_MENU, self.OnIpcGlobal, ipcGlobal)
        self.Bind(wx.EVT_MENU, self.OnVarAnual, varAnual)
        self.Bind(wx.EVT_MENU, self.OnRemuMinMensal, remuMinMensal)
        self.Bind(wx.EVT_MENU, self.OnRemuMaxMensal, remuMaxMensal)
        self.Bind(wx.EVT_MENU, self.OnRemuMinMensalConstante, remuMinMensalConstante)
        self.Bind(wx.EVT_MENU, self.OnRemuMaxMensalConstante, remuMaxMensalConstante)
        self.Bind(wx.EVT_MENU, self.OnPib, pib)
        self.Bind(wx.EVT_MENU, self.OnrenNacionalPerCapita, renNacionalPerCapita)
        self.Bind(wx.EVT_MENU, self.OnrenDisponivelPerCapita, renDispinivelPerCapita)
        self.Bind(wx.EVT_MENU, self.OnrenPerCapita, remuPerCapita)
       
        #Criação do cursor de texto
        self.controlo = wx.TextCtrl(self, style=wx.TE_MULTILINE)
       
        #Adiciona os varios menus à barra de menu
        menubar.Append(menuFicheiro, '&Ficheiro')
        menubar.Append(menuGraficos, '&Graficos')
        menubar.Append(menuAjuda, '&Ajuda')
       
        #Torna a barra de menu visivel
        self.SetMenuBar(menubar)
       
        #Tamanho da Janela
        self.SetSize((350, 250))
        #Titulo da Janela
        self.SetTitle('InterfaceTPLP6035')
        #Local onde a janela aparece
        self.Centre()
        #Torna a janela visivel
        self.Show(True)
        pass
       
    def OnAbrir(self, event):
        """ Open a file"""
        self.nomeDirectoria = ''
        dlg = wx.FileDialog(self, "Choose a file", self.nomeDirectoria, "", "*.*", wx.OPEN)
        if dlg.ShowModal() == wx.ID_OK:
            self.nomeFicheiro = dlg.GetFilename()
            self.nomeDirectoria = dlg.GetDirectory()
            f = open(os.path.join(self.nomeDirectoria, self.nomeFicheiro), 'r')
            self.controlo.SetValue(f.read())
            f.close()
        dlg.Destroy()
        pass
           
    def OnSair(self, event):
        '''
        Metodo que implementa o evento de fechar a janela
        '''
        self.Close()
        pass
   
    def OnAjuda(self, event):
        '''
        Metodo que implementa o evento de Ajuda o utilizador
        Neste caso Aperece numa caixa de dialogo o autor do Trabalho
        '''
        dlg = wx.MessageDialog(self, 'Interface Grafica do Trabalho Pratico de Lp Do Aluno João Rebocho Nº 6035', "Ajuda", wx.OK)
        dlg.ShowModal() # Show it
        dlg.Destroy() # finally destroy it when finished
        pass
       
    def OnIpcGlobal(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico do Indice de Precos ao consumidor
        '''
        frame_2.Show(1)
        pass
        
    def OnVarAnual(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico de Percentagem da Taixa de Inflacao
        '''
        frame_3.Show(1)
        pass
    def OnRemuMinMensal(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico da Remuneracao Minima Mensal
        '''
        frame_4.Show(1)
        pass
   
    def OnRemuMaxMensal(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico da Remuneracao Maxima Mensal
        '''
        frame_5.Show(1)
        pass
    def OnRemuMinMensalConstante(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico da Remuneracao Minima Mensal a Precos constantes
        '''
        frame_11.Show(1)
        pass
    def OnRemuMaxMensalConstante(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico da Remuneracao Maxima Mensal a Precos constantes
        '''
        frame_12.Show(1)
        pass

    def OnPib(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico do Pib
        '''
        frame_7.Show(1)
        pass
    
    def OnrenNacionalPerCapita(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico do Rendimento Nacional Per Capita
        '''
        frame_8.Show(1)
        pass
    
    def OnrenDisponivelPerCapita(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico do Rendimento Disponivel Per Capita
        '''
        frame_9.Show(1)
        pass
    
    def OnrenPerCapita(self, event):
        '''
        Este metodo vai chamar a janela que comtem a imagem do Grafico da Remuneracao Per Capita
        '''
        frame_10.Show(1)
        pass
   
    pass

class IpcGlobal(wx.Frame):
    '''
    Esta classe vai  implementar a janela que comtem a imagem do Grafico do Indice de Precos ao consumidor
    '''
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(IpcGlobal, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico do Indice de Precos ao consumidor
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico do Indice de Precos ao consumidor
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Guarda a imagem na variavel imagem1
        imagem1 = wx.Image("IpcGlobal.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(imagem1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('IpcGlobal')
        pass
   
   
class VariacaoAnual(wx.Frame):
    '''
    Esta classe vai  implementar a janela que comtem a imagem do Grafico da Taxa de Inflacao
    '''
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(VariacaoAnual, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico da Taxa de Inflacao
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico da Taxa de Inflacao
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("VariacaoAnual.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('VariacaoAnual')
        pass
   
class RemuneracaoMinimaMensal(wx.Frame):
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(RemuneracaoMinimaMensal, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico da RemuneracaoMinimaMensal
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico da RemuneracaoMinimaMensal
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RemuneracaoMinimaMensal.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RemuneracaoMinimaMensal')
        pass
    pass

class RemuneracaoMaximaMensal(wx.Frame):
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(RemuneracaoMaximaMensal, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico da RemuneracaoMaximaMensal
        self.InitUI()
        pass
    pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico da RemuneracaoMaximaMensal
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RemuneracaoMaximaMensal.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RemuneracaoMaximaMensal')
        pass
    pass
    
class RemuneracaoMinimaMensalPrecosConstante(wx.Frame):
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(RemuneracaoMinimaMensalPrecosConstante, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico da RemuneracaoMinimaMensalPrecosConstante
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico da RemuneracaoMinimaMensalPrecosConstante
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RemuneracaoMinimaMensalConstante.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RemuneracaoMinimaMensalPrecosConstante')
        pass
    pass

class RemuneracaoMaximaMensalPrecosConstante(wx.Frame):
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(RemuneracaoMaximaMensalPrecosConstante, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico da RemuneracaoMaximaMensalPrecosConstante
        self.InitUI()
        pass
    pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico da RemuneracaoMaximaMensalPrecosConstante
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RemuneracaoMaximaMensalConstante.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RemuneracaoMaximaMensalPrecosConstante')
        pass
    pass
   
        
class Pib(wx.Frame):
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(Pib, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico do Pib
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico do Pib
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("pib.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(100,100))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('Pib')
        pass
        
class RendimentoNacionalBrutoPerCapita(wx.Frame):
    def __init__(self, *args, **kwargs):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico do RendimentoNacionalBrutoPerCapita
        '''
        #Chamada do construtor da classe
        super(RendimentoNacionalBrutoPerCapita, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico do RendimentoNacionalBrutoPerCapita
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico do RendimentoNacionalBrutoPerCapita
        '''
	#Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RendimentoNacional.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RendimentoNacionalBrutoPerCapita')
        pass       
       
        
class RendimentoDisponivelBrutoPerCapita(wx.Frame):
    '''
    Neste metodo crio toda a interface para mostrar a imagem do grafico do RendimentoDisponivelBrutoPerCapita
    '''
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(RendimentoDisponivelBrutoPerCapita, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico do RendimentoDisponivelBrutoPerCapita
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico do RendimentoDisponivelBrutoPerCapita
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RendimentoDisponivel.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RendimentoDisponivelBrutoPerCapita')
        pass
    pass
    
class RemuneracaoPerCapita(wx.Frame):
    '''
    Neste metodo crio toda a interface para mostrar a imagem do grafico da RemuneracaoPerCapita
    '''
    def __init__(self, *args, **kwargs):
        #Chamada do construtor da classe
        super(RemuneracaoPerCapita, self).__init__(*args, **kwargs)
        #Chamada da funcao que vai criar a janela e o seu layout neste casos é a imagem do grafico da RemuneracaoPerCapita
        self.InitUI()
        pass
       
    def InitUI(self):
        '''
        Neste metodo crio toda a interface para mostrar a imagem do grafico da RemuneracaoPerCapita
        '''
        #Criacao de um objecto do tipo panel
        panel = wx.Panel(self)
        #Grava o ficheiro na variavel imagem1
        image1 = wx.Image("RemuneracaoPerCapita.png", wx.BITMAP_TYPE_ANY)
        #Mostra a imagem no ecra
        wx.StaticBitmap(panel, -1, wx.BitmapFromImage(image1), pos=(0,0))
        #Tamanho da janela
        self.SetSize((1000, 800))
        #Titulo da Janela
        self.SetTitle('RemuneracaoPerCapita')
        pass
    pass
       



if __name__ == '__main__':
    '''
    Chamada das varias classes
    '''
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frame_1 = InterfaceTP6035(None, -1, "")
    frame_2 = IpcGlobal(None,-1,"")
    frame_3 = VariacaoAnual(None,-1,"")
    frame_4 = RemuneracaoMinimaMensal(None,-1,"")
    frame_5 = RemuneracaoMaximaMensal(None, -1, "")
    frame_7 = Pib(None,-1,"")
    frame_8= RendimentoNacionalBrutoPerCapita(None,-1,"")
    frame_9 = RendimentoDisponivelBrutoPerCapita(None,-1,"")
    frame_10 = RemuneracaoPerCapita(None,-1,"")
    frame_11 = RemuneracaoMinimaMensalPrecosConstante(None,-1,"")
    frame_12 = RemuneracaoMaximaMensalPrecosConstante(None,-1,"")
    app.SetTopWindow(frame_1)
    #Torna a frame_1 que é a classe que cria toda a interface visivel
    frame_1.Show()
    app.MainLoop()

